import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] sb=isMain(n);
        for(int a:sb){
            System.out.println(a);
        }
    }
    public static int[] isMain(int n){
        int[] arr=new int[2];
        for(int i=0;i<n/2;i++){
            if(isPrime(i)&&isPrime(n-i)){
                arr[0]=i;
                arr[1]=n-i;
            }
        }
        return arr;
    }
    public static boolean isPrime(int n){
        for(int i=2;i<n;i++){
            if(n%i==0){
                return false;
            }
        }
        return true;
    }
}
//package binary_tree.Newcode;
//
//public class change {
//    public static boolean flag;
//    public  int StrToInt(String str){
//        flag=true;
//        if(str==null||str.trim().equals(" ")){
//            flag=fase;
//            return 0;
//        }
//        int symbol=0;
//        int frist=0;
//        char[] chars=str.trim().toCharArray();
//        if(chars[0]=='+'){
//            frist=1;
//        }
//        if(chars[0]=='-'){
//            symbol=1;
//            frist=1;
//        }
//        int result=0;
//        for(int i=first;i<str.length();i++){
//            if(chars[i]>'9'||chars[i]<'0'){
//                flag=true;
//                return 0;
//            }
//            int sum=result*10+(int)(chars[i]-'0');
//            if((sum-(int)(chars[i]-'0'))/10!=result){
//                flag=true;
//                return 0;
//            }
//            result=result*10+(int)(chars[i]-'0');
//        }
//
//    }
//
//}
